--- /dev/null
+function! GetFoldExprFromIndent()
+ " Calcule l'indentation en fonction des tabulations
+ " et espaces au début des lignes
+ let line = getline(v:lnum)
+ let tabs = strlen(matchstr(line,"^\t*"))
+ let spaces = strlen(matchstr(line,"^[ \t]*")) - tabs
+ return tabs + ((spaces + 3) / 4)
+ endfunction
+hi FoldColumn ctermfg=black ctermbg=none cterm=bold
+hi Folded ctermfg=black ctermbg=none cterm=bold
+hi LineNr ctermfg=black ctermbg=none cterm=bold
+hi Pmenu cterm=none ctermfg=white ctermbg=blue guibg=blue
+hi PmenuSel cterm=bold ctermfg=white ctermbg=red guibg=red
+hi Search ctermbg=yellow
+hi SpecialKey ctermfg=black cterm=bold
+hi StatusLine term=bold,reverse ctermfg=grey ctermbg=blue cterm=none
+hi StatusLineNC term=reverse ctermfg=blue ctermbg=none cterm=underline
+hi Visual guibg=yellow
+nmap <silent> * :set hls<CR>:let @/="\\<<C-r><C-w>\\>"<CR>/<BS>
+nmap <silent> µ :set hls<CR>:let @/="<C-r><C-w>"<CR>/<BS>
+nnoremap i <Up>
+nnoremap k <Down>
+nnoremap j <Left>
+nnoremap l <Right>
+xnoremap i <Up>
+xnoremap k <Down>
+xnoremap j <Left>
+xnoremap l <Right>
+nnoremap K J
+nnoremap J <Home>w
+nnoremap L <End>
+set autochdir
+set cmdheight=1
+set completeopt=longest,menu
+set directory=$HOME/var/cache/vim/swap
+set encoding=utf-8
+set foldcolumn=0
+set foldenable
+set foldexpr=GetFoldExprFromIndent()
+set foldmethod=expr
+set foldminlines=0
+set history=2048
+set hlsearch
+set incsearch
+set laststatus=2
+set lazyredraw
+set list
+set path=.,/usr/include,/usr/local/include,,
+set scroll=0
+set scrolloff=0
+set sidescroll=0
+set sidescrolloff=0
+set swapfile
+set matchpairs+=<:>
+set maxmempattern=2000
+set nocompatible
+set noerrorbells
+set noignorecase
+set loadplugins
+set nowrap
+set nowrapscan
+set number
+set ruler
+set runtimepath=$HOME/.vim,$VIMRUNTIME,$VIM
+set sessionoptions=curdir,folds
+set shiftwidth=2
+set showcmd
+set smartindent
+set statusline=%F%=\ %m%R\ %l:%c\ x%02B\ %Y\ %{&encoding}
+set tabstop=2
+set ttyfast
+set undolevels=512
+set updatetime=4096
+set verbose=0
+set viewdir=$HOME/var/lib/vim/view
+set viminfo+=n$HOME/var/cache/vim/info
+set novisualbell
+set visualbell t_vb=
+set whichwrap+=<,>,[,]
+set wildignore=*.a,*.d,*.o,*.so,*~,*.cmo,*.cmi,*.cmx,*.cmxs,*.cma,*.cmxa,*.byte,*.native
+set wildmenu
+set wildmode=longest,list,full
+syntax on
+if (&term == "linux")
+ set foldtext=substitute(getline(v\:foldstart),'\\t','\|_','g').'\ \ ('.(v\:foldend-v\:foldstart+1).')\ '
+ set fillchars=fold:_
+ set list listchars=nbsp:+,tab:\|_,trail:_,extends:>,precedes:<
+ else
+ set foldtext=substitute(getline(v\:foldstart),'\\t','⎢·','g').'\ \ ('.(v\:foldend-v\:foldstart+1).')\ '
+ set fillchars=fold:·
+ set list listchars=nbsp:¬,tab:⎢·,trail:·,extends:>,precedes:<
+ endif
+if (v:version >= 700)
+ hi TabLine term=bold,reverse ctermfg=white ctermbg=blue cterm=none
+ hi TabLineFill term=bold,reverse ctermfg=none ctermbg=blue cterm=none
+ hi TabLineSel term=reverse ctermfg=white ctermbg=none cterm=bold
+ inoremap <C-S-tab> <Esc>:tabprevious<CR>i
+ inoremap <C-t> <Esc>:tabnew<CR>
+ inoremap <C-tab> <Esc>:tabnext<CR>i
+ nnoremap <C-S-tab> :tabprevious<CR>
+ nnoremap <Esc><tab> :tabprevious<CR>
+ nnoremap <C-t> :tabnew<CR>
+ nnoremap <tab> :tabnext<CR>
+ nnoremap <C-tab> :tabprevious<CR>
+ nnoremap td :tabclose<CR>
+ nnoremap ti :tabfirst<CR>
+ nnoremap tj :tabprev<CR>
+ nnoremap tk :tablast<CR>
+ nnoremap tl :tabnext<CR>
+ nnoremap tm :tabm<Space>
+ nnoremap tn :tabnew<Space>
+ nnoremap tt :tabedit<Space>
+ set tabpagemax=1000
+ set sessionoptions+=tabpages
+ endif
+if (v:version >= 740)
+ set undodir=$HOME/var/cache/vim/undo/
+ set undofile
+ endif
+"""
+""" filetypes
+"""
+autocmd BufNewFile,BufRead *.hledger,*.ledger,*.journal setfiletype hledger
+autocmd Filetype hledger set iskeyword+=.,38,39,40,41,44,45,58
+"""
+""" plugins
+"""
+runtime plugin/gundo.vim
+runtime plugin/gzip.vim
+runtime macros/justify.vim
+let b:match_words = '«:»,“:”'
+runtime plugin/matchit.vim
+let g:netrw_liststyle = 3
+"let g:netrw_cursorline = 0
+let s:netrw_usercul = 0
+runtime plugin/netrwPlugin.vim
+
+" EasyAlign
+ vmap <Enter> <Plug>(EasyAlign)
+ nmap <Leader>a <Plug>(EasyAlign)
+ let g:easy_align_ignore_groups = ['Comment', 'String', 'hledgerComment', 'hledgerTransaction']
+
+" neocomplcache
+ " Disable automatic completion popup
+ let g:neocomplcache_disable_auto_complete = 1
+ " Disable AutoComplPop.
+ let g:acp_enableAtStartup = 0
+ " Use neocomplcache.
+ let g:neocomplcache_enable_at_startup = 1
+ " Use smartcase.
+ let g:neocomplcache_enable_smart_case = 1
+ " Set minimum syntax keyword length.
+ let g:neocomplcache_min_syntax_length = 2
+ let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'
+
+ " Define dictionary.
+ let g:neocomplcache_dictionary_filetype_lists = {
+ \ 'default' : '',
+ \ 'vimshell' : $HOME.'/.vimshell_hist',
+ \ 'scheme' : $HOME.'/.gosh_completions'
+ \ }
+
+ " Define keyword.
+ if !exists('g:neocomplcache_keyword_patterns')
+ let g:neocomplcache_keyword_patterns = {}
+ endif
+ let g:neocomplcache_keyword_patterns['default'] = '\h\w*'
+
+ " Plugin key-mappings.
+ inoremap <expr><C-g> neocomplcache#undo_completion()
+ inoremap <expr><C-l> neocomplcache#complete_common_string()
+
+ " Complete with <Tab>.
+ "inoremap <expr><TAB> pumvisible() ? "\<C-n>" : <SID>check_back_space() ? "\<TAB>" : "\<C-x>\<C-u>"
+ inoremap <expr><TAB> pumvisible() ? neocomplcache#complete_common_string() : <SID>check_back_space() ? "\<TAB>" : "\<C-x>\<C-u>"
+
+ function! s:check_back_space()
+ let col = col('.') - 1
+ return !col || getline('.')[col - 1] =~ '\s'
+ endfunction
+
+ " Choose candidate with <CR>.
+ inoremap <expr><CR> neocomplcache#smart_close_popup() . “\<CR>”
+
+ " Recommended key-mappings.
+ " <CR>: close popup and save indent.
+ inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
+ function! s:my_cr_function()
+ return neocomplcache#smart_close_popup() . "\<CR>"
+ " For no inserting <CR> key.
+ "return pumvisible() ? neocomplcache#close_popup() : "\<CR>"
+ endfunction
+ " <TAB>: completion.
+ "inoremap <expr><TAB> pumvisible() ? neocomplcache#complete_common_string() : "\<TAB>"
+ "inoremap <expr><TAB> neocomplcache#complete_common_string()
+ " <C-h>, <BS>: close popup and delete backword char.
+ inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
+ inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
+ inoremap <expr><C-y> neocomplcache#close_popup()
+ inoremap <expr><C-e> neocomplcache#cancel_popup()
+ " Close popup by <Space>.
+ inoremap <expr><Space> pumvisible() ? neocomplcache#close_popup() : "\<Space>"
+
+ " Sort choices by bytes
+ call neocomplcache#custom_source('_', 'sorters', ['sorter_bytes'])
+
+ " For cursor moving in insert mode(Not recommended)
+ "inoremap <expr><Left> neocomplcache#close_popup() . "\<Left>"
+ "inoremap <expr><Right> neocomplcache#close_popup() . "\<Right>"
+ "inoremap <expr><Up> neocomplcache#close_popup() . "\<Up>"
+ "inoremap <expr><Down> neocomplcache#close_popup() . "\<Down>"
+ " Or set this.
+ "let g:neocomplcache_enable_cursor_hold_i = 1
+ " Or set this.
+ "let g:neocomplcache_enable_insert_char_pre = 1
+
+ " AutoComplPop like behavior.
+ "let g:neocomplcache_enable_auto_select = 1
+
+ " Enable heavy features.
+ " Use camel case completion.
+ "let g:neocomplcache_enable_camel_case_completion = 1
+ " Use underbar completion.
+ let g:neocomplcache_enable_underbar_completion = 1
+
+ " Shell like behavior(not recommended).
+ "set completeopt+=longest
+ "let g:neocomplcache_enable_auto_select = 1
+ "let g:neocomplcache_disable_auto_complete = 1
+ "inoremap <expr><TAB> pumvisible() ? "\<Down>" : "\<C-x>\<C-u>"
+
+ " Enable omni completion.
+ autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
+ autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
+ autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
+ autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
+ autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
+
+ " Enable heavy omni completion.
+ if !exists('g:neocomplcache_omni_patterns')
+ let g:neocomplcache_omni_patterns = {}
+ endif
+ let g:neocomplcache_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::'
+ let g:neocomplcache_omni_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)'
+ let g:neocomplcache_omni_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'
+
+ " For perlomni.vim setting.
+ " https://github.com/c9s/perlomni.vim
+ let g:neocomplcache_omni_patterns.perl = '\h\w*->\h\w*\|\h\w*::'
+ runtime plugin/neocomplcache.vim
--- /dev/null
+"=============================================================================
+" FILE: sorter_bytes.vim
+" AUTHOR: Julien Moutinho <julm+vim+neocomplcache@autogeree.net>
+" Last Modified: 24 July 2014
+" License: MIT license {{{
+" Permission is hereby granted, free of charge, to any person obtaining
+" a copy of this software and associated documentation files (the
+" "Software"), to deal in the Software without restriction, including
+" without limitation the rights to use, copy, modify, merge, publish,
+" distribute, sublicense, and/or sell copies of the Software, and to
+" permit persons to whom the Software is furnished to do so, subject to
+" the following conditions:
+"
+" The above copyright notice and this permission notice shall be included
+" in all copies or substantial portions of the Software.
+"
+" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+" }}}
+"=============================================================================
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+function! neocomplcache#filters#sorter_bytes#define() "{{{
+ return s:sorter
+ endfunction"}}}
+
+let s:sorter = {
+ \ 'name' : 'sorter_bytes',
+ \ 'description' : 'sort by matched bytes order',
+ \}
+
+function! s:sorter.filter(context) "{{{
+ return sort(a:context.candidates, 's:compare')
+ endfunction"}}}
+
+function! s:compare(i1, i2)
+ let diff = a:i1.word ==# a:i2.word
+ if !diff
+ let diff = (a:i1.word > a:i2.word) ? 1 : -1
+ endif
+ return diff
+ endfunction
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
+
+" vim: foldmethod=marker